/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package codigoGeral;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author william Bartko
 */
public class Calendario {

    private String data;
    private int diaSemanaDecimal;

    public Calendario(String data) {
        if (data == null) {
            return;
        }
        this.data = data;

        Date data2 = null;
        try {
            data2 = getDate(null, data); //pega string de data e converte em Data
        } catch (ParseException ex) {
            Logger.getLogger(Calendario.class.getName()).log(Level.SEVERE, null, ex);
        }


        Calendar g = new GregorianCalendar();//calendario do tipo caledar
        g.setTime(data2);//insere data

        diaSemanaDecimal = g.get(Calendar.DAY_OF_WEEK);//pega retorno em decimal de data





    }

    public String pegaDataAtual() {

        Date data2 = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        StringBuilder dataString = new StringBuilder(dateFormat.format(data2));
        return dataString.toString();

    }

    public static Date getDate(String formato, String data) throws ParseException {
        formato = formato == null ? "dd/MM/yyyy" : formato;
        data = data == null ? new Date().toString() : data;

        return new SimpleDateFormat(formato).parse(data);
    }

    public String retornaDiaSemana() {

//        Date data2 = null;
//        try {
//            data2 = getDate(null, data); //pega string de data e converte em Data
//        } catch (ParseException ex) {
//            Logger.getLogger(Calendario.class.getName()).log(Level.SEVERE, null, ex);
//        }
//
//
//        Calendar g = new GregorianCalendar();//calendario do tipo caledar
//        g.setTime(data2);//insere data
//
//        int diaSemanaDecimal = g.get(Calendar.DAY_OF_WEEK);//pega retorno em decimal de data

        String diaSemana = null;

        switch (diaSemanaDecimal) {


            case 1: {
                diaSemana = "Domingo";
                break;
            }
            case 2: {
                diaSemana = "Segunda";
                break;
            }
            case 3: {
                diaSemana = "Terça";
                break;
            }
            case 4: {
                diaSemana = "Quarta";
                break;
            }
            case 5: {
                diaSemana = "Quinta";
                break;
            }
            case 6: {
                diaSemana = "Sexta";
                break;
            }
            case 7: {
                diaSemana = "Sábado";
                break;
            }

        }
        return diaSemana;

    }

    public String retornaDiaSemanaCom3PrimeirosCaracteres() {


        String diaSemana = null;

        switch (diaSemanaDecimal) {


            case 1: {
                diaSemana = "dom";
                break;
            }
            case 2: {
                diaSemana = "seg";
                break;
            }
            case 3: {
                diaSemana = "ter";
                break;
            }
            case 4: {
                diaSemana = "qua";
                break;
            }
            case 5: {
                diaSemana = "qui";
                break;
            }
            case 6: {
                diaSemana = "sex";
                break;
            }
            case 7: {
                diaSemana = "sab";
                break;
            }

        }
        return diaSemana;

    }

    //devolve a data de hoje, mas em formato de string
    protected static String dataHoje() {

        SimpleDateFormat out = new SimpleDateFormat("dd/MM/yyyy");
        String result = out.format(new Date());
        return result;

    }

     public boolean comparaDataComAtual(String dataAComparar){

        //formato de data
        DateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");

        // pega data para comparar com data atual
        Date dataAcomparar = null;
        try {
            dataAcomparar = formatoData.parse(dataAComparar);
        } catch (ParseException ex) {
            Logger.getLogger(Calendario.class.getName()).log(Level.SEVERE, null, ex);
        }

        // pega data de hoje e converte em string
        Date dataHoje = null;
        try {
            dataHoje = formatoData.parse(dataHoje());
        } catch (ParseException ex) {
            Logger.getLogger(Calendario.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("data de hoje "+ dataHoje());


        if (dataAcomparar.equals(dataHoje)) {
            return true;

        } else if (dataAcomparar.before(dataHoje)) {
            return false;

        }
        //se nao satisafazer duas primeiras, significa que a data eh adiante
        return true;

    }

    public static void main(String[] args) throws ParseException {
           Calendario calendario = new Calendario(null);
            System.out.println(calendario.retornaDiaSemana());
            System.out.println(calendario.retornaDiaSemanaCom3PrimeirosCaracteres());
             System.out.println(calendario.comparaDataComAtual("19/06/2010"));

    }
}






